/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Principal;

import java.awt.Point;
import java.util.List;
import java.lang.Math;
import java.util.ArrayList;

/**
 *
 * @author Halc
 */
public class Astar {

    private List<Nodo> Abierta;
    private List<Nodo> Cerrada;
    private Point inicio1;
    private Point final1;
    private Nodo inicio;
    private Nodo anterior;
    private Nodo actual;
    private Nodo valorar;

    public Astar() {
        Abierta = new ArrayList<Nodo>();
        Cerrada = new ArrayList<Nodo>();
        inicio = new Nodo();
        anterior = new Nodo();
        actual = new Nodo();
        valorar = new Nodo();

    }

    public void resAstar(int[][] laberinto, Point pInicio, Point pFinal) {

        inicio.setPosicion(pInicio.x, pInicio.y);
        inicio.setPosPadre(-1, -1);
        anterior.setPosicion(-1, -1);
        Abierta.add(inicio);
        //verificamos si es meta
        int d = -1;
        int f_min = 10000;
        
        
        //while (inicio.Posicion.equals(pFinal) == false) {
            while (inicio.Posicion.equals(pFinal) == false) {
            //nodo con la funcion de menor costo
            for (int i = 0; i < Abierta.size(); i++) {
                valorar = Abierta.get(i);
                int factual = valorar.ValorFun;

                if (factual < f_min) {
                    f_min = factual;
                    actual.setPosicion(valorar.Posicion.x, valorar.Posicion.y);
                }
            }
            
            
            for (int i = 0; i < Abierta.size(); i++) {
                // Retirar el nodo a expandir de la lista abierta y pasarlo a lista cerrada
                if(Abierta.get(i).Posicion.x==actual.Posicion.x && Abierta.get(i).Posicion.y==actual.Posicion.y){
                Nodo n=Abierta.remove(i);
                // si el nodo es retiro es por que es el destino y se termina el algoritmo
                
                if(inicio.Posicion.equals(pFinal)){
                }
                    
                }
            }

        }
        
    }

